今天要介紹的是在網頁系統架構中的三個階層與其中的幾個重要角色。
三個階層分別為:
Presentation Layer(表示層) → Client(瀏覽器、App),指任何發送請求到 server 端並接收回應的裝置/應用程式。
Application Layer(應用層) → App Server(處理程式邏輯、商業邏輯)
當使用者在瀏覽器中輸入網址並發送請求時,請求會先抵達 Web Server(如 Nginx、Apache)。
Web Server 會根據設定判斷:
若是靜態資源(HTML、圖片、CSS…),直接讀取檔案並回傳給使用者。
若是動態請求,則交由應用程式層(例如 PHP、Node.js、Python)處理邏輯與資料庫互動,產生內容後再回傳給使用者。
在現代架構中,Web Server 與 App Server 的界線有時會合而為一,例如在簡單的 LAMP 架構中,Web server apache 同時就扮演了 App server 的角色,它可以直接回傳靜態內容(HTML、圖片等),也可以透過模組(例如 Apache 的 mod_php)或代理(如轉發至 PHP-FPM、Node.js 等)來處理動態內容。
常見的 Web server 有 apache、nginx 等等,下面會以 apache 為例示範如何安裝。
範例作業系統版本:Ubuntu 18.04
打開 terminal,輸入以下指令:
$sudo apt update
$sudo apt install apache2
安裝好後,打開瀏覽器,在網址列打上:
(server_ip 若沒特別設定過基本上都是127.0.0.1)
http://your_server_ip
看到這個畫面就表示安裝成功~
或者也可以輸入這個指令來查看apache的狀態
sudo systemctl status apache2
若 apache 未啟動,可以輸入以下指令啟動
sudo systemctl start apache2
或許看到這有人會好奇,為什麼是 apache2? 那 apache1 呢?
apache1.x 是在1990年代開發的,許多技術都已過時,而相較之下 apache2 則擁有 mult-ithreading、優化過的記憶體管理等,可以更有效的處理大量請求。apache1 也已經不再被維護,因此也隱含一些安全性問題,且在他之後推出的 nginx、caddy 等都是效能及易用性更高更受歡迎的選擇,apache1 已逐漸被市場淘汰,所以2002推出了 apache2,解決了第一代既有問題,且現在都還持續被維護,是個穩定、安全且被廣泛使用的 web server。
安裝 MySQL server
$sudo apt install mysql-server
安裝過程系統會詢問你是否要繼續,輸入y就行了
安裝好後,輸入以下指令,啟動互動式shell script:
$sudo mysql_secure_installation
接著系統會詢問你是否要安裝 VALIDATE PASSWORD PLUGIN
VALIDATE PASSWORD PLUGIN 是 MySQL 的一個 plugin,用於驗證使用者設定的密碼強度,進而提高安全性。
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
輸入y的話便會看到以下文字,可依據你的需求設定密碼強度:
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
若輸入了上面的驗證規範(validation policy),設定 MySQL 密碼時就必須遵從你所設定的強度規範,否則 MySQL 會拒絕你的密碼並出現錯誤。
Using existing password for root.
Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : n
接下來系統問你的每個問題只要按y和enter就可以了。
他會刪除一些匿名用戶和測試的資料庫,並禁止root遠端登錄,然後載入剛才你所設定的驗證規範,以便讓 MySQL 立即遵從你的設定。
安裝好後,打開terminal,輸入 mysql -uroot -p
然後輸入你的MySQL密碼,看到這個畫面就表示安裝成功: